#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>
#include <taskmanager.h>
#include <poolinfo.h>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
signals:
    void buttonStateChanged(bool isPoolInitialized);
private slots:
    // 按钮点击事件
    void on_initPoolButton_clicked();
    
    void on_resetPoolButton_clicked();

    void on_allocateButton_clicked();
     
    void on_pressureTestButton_clicked();

    // 按钮状态改变事件
    void onButtonStateChanged(bool isPoolInitialized);

    // 任务列表更新事件
    void onTaskBatchAdded();
    void onTaskRemoved(int taskId);
    void onTaskListCleared();
private:
    // 显示内存池状态
    void updatePoolStatus();
    // 更新配置
    void updateConfig();
    // 创建内存池可视化
    QString createPoolView(const PoolStatus& status);
    // 创建内存块指示器
    QString createBlockIndicator(const PoolStatus& status);
    // 创建内存使用情况条
    QString createUsageBar(const PoolStatus& status);
    // 创建内存池文字信息
    QString createPoolTextInfo(const PoolStatus& status);
private:
    Ui::MainWindow *ui;
    QTimer *timer;
    TaskManager *taskManager;
};
#endif // MAINWINDOW_H
